1 | ____ _ _ ___ |
为什么说是”进阶版”? 以为他们都是认证机制
是什么: 开放授权,开发认证中心
四种方式:
一. 到底 OAuth 是什么?
认证 Authentication VS 授权 Authorization
看授权模式图之前,先区别下这两个概念。
- 认证就是我要输入帐号和密码来证明我是我
- 授权就是并非通过帐号和密码来把我的东西借给其他人
这其中的关键就是,是否需要输入帐号密码。记住,OAuth 不需要输入帐号和密码,你要做的只是授权。
下面这张图清晰的说明了,认证和授权。
二. 授权模式
1. 授权码模式 Authorization Code
- 授权码模式是最常见常用的模式,我们所熟悉的微博,QQ 等都是这种模式。
- 另外也是最繁琐的一种方式,如果弄懂了这个相信接下来的三种类型都会迎刃而解。
- 这种模式和其他最大的区别就在于是否有
授权码这个步骤。
1.1 图解
1.2 授权请求 Authorization Request
1 | GET {认证终点} |
1.3 授权响应 Authorization Response
1 | HTTP/1.1 302 Found |
1.4 令牌请求 Access Token Request
1 | POST {令牌终点} HTTP/1.1 |
根据具体情况有可能是向客户端服务器进行请求,这时候请加上 Basic 认证(Authorization 头部)或者是 参数 client_id & client_secret
1.5 令牌响应 Access Token Response
1 | HTTP/1.1 200 OK |
2. 简化模式 Implicit
2.2 授权请求 Authorization Request
1 | GET {授权终点} |
2.3 授权响应 Authorization Response
1 | HTTP/1.1 302 Found |
3. 密码模式 Resource Owner Password Credentials
- 密码模式其实就是进一步再去简化了简化模式。
- 不仅仅没有了授权码模式下的授权码,也没了简化模式下的授权请求。
- 直接就请求了令牌码。
3.1 图解
3.2 令牌请求 Access Token Request
1 | POST {令牌终点} HTTP/1.1 |
根据具体情况有可能是向客户端服务器进行请求,这时候请加上 Basic 认证(Authorization 头部)或者是 参数 client_id & client_secret
3.3 令牌响应 Access Token Response
1 | HTTP/1.1 200 OK |
4. 客户端模式 Client Credentials
- 客户端模式可是最简化的了。
- 什么都不问,直接请求!简单粗暴给我令牌!
4.1 图解
4.2 令牌请求 Access Token Request
1 | POST {令牌终点} HTTP/1.1 |
4.3 令牌响应 Access Token Response
1 | HTTP/1.1 200 OK |
5. 刷新令牌 Refresh Token
5.1 图解
第三方已存在令牌码为前提进行更新令牌
5.2 令牌请求 Access Token Request
1 | POST {令牌终点} HTTP/1.1 |
根据具体情况有可能是向客户端服务器进行请求,这时候请加上 Basic 认证(Authorization 头)或者是 参数 client_id & client_secret
5.3 令牌响应 Access Token Response
1 | HTTP/1.1 200 OK |
三. 总结
| 授权模式 | 授权终点 | 令牌终点 |
|---|---|---|
| 授权码模式 | 使用 | 使用 |
| 简化模式 | 使用 | 不使用 |
| 密码模式 | 不使用 | 使用 |
| 客户端模式 | 不使用 | 使用 |
| 刷新令牌 | 不使用 | 使用 |
其实授权终点就是授权请求和响应
令牌终点就是令牌的请求和响应
感谢您的阅读!
如何获取这么多图片的base64?
注意: 这都是试验性质的代码. 主要测试reduce顺便把base64下载下来.
1 | import cn.hutool.core.codec.Base64; |